package com.fary.web.validator;

import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.*;

@Documented
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.CONSTRUCTOR, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = {ValueConstraintValidator.class})
public @interface CheckValue {

    /**
     * 错误信息
     */
    String message() default "";

    /**
     * 分组
     */
    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};

    /**
     * 整数部分
     */
    int integer() default 0;

    /**
     * 小数部分
     */
    int decimal() default 0;

    /**
     * 正则表达式
     */
    String regex() default "";

    /**
     * 不能为空
     */
    boolean notBlank() default false;

    /**
     * 最小值
     */
    long min() default Long.MIN_VALUE;

    /**
     * 最大值
     */
    long max() default Long.MAX_VALUE;

    /**
     * 是否包含最小值
     */
    boolean includeMin() default true;

    /**
     * 是否包含最大值
     */
    boolean includeMax() default true;

    /**
     * 最小长度
     */
    int minLength() default 0;

    /**
     * 最大长度
     */
    int maxLength() default 4000;
}
